package com.peas.platform.module.icims.contract.initial.service;

import com.peas.platform.framework.mybatisplus.service.BaseService;
import com.peas.platform.module.icims.contract.initial.api.req.*;
import com.peas.platform.module.icims.contract.initial.api.resp.ContractLedgerResp;
import com.peas.platform.module.icims.contract.initial.api.resp.ContractStatusResp;
import com.peas.platform.module.icims.contract.initial.api.resp.ContractTop10Resp;
import com.peas.platform.module.icims.contract.initial.dto.ContractInitialDto;

import java.util.List;

public interface ContractInitialService extends BaseService<ContractInitialDto> {

    ContractInitialDto saveContractInitial(SaveContractInitialReq vo);

    void submitContractInitial(SubmitContractInitialReq vo);

    void revocationContractInitial(Long id);

    // 生效
    void effectContractInitial(Long id, EffectContractInitialReq vo);

    // 请款
    void cashContractInitial(Long id, CashContractInitialReq vo);

    // 验收
    void checkingContractInitial(Long id, CheckingContractInitialReq vo);

    // 完结
    void completeContractInitial(Long id, CompleteContractInitialReq vo);

    // 归档
    void archiveContractInitial(Long id, ArchiveContractInitialReq vo);

    // 中止
    void interruptContractInitial(Long id, InterruptContractInitialReq vo);

    // 重启
    void restartContractInitial(Long id, RestartContractInitialReq vo);

    // 补充协议
    void supplementalContractInitial(Long id, SupplementalContractInitialReq vo);

    // 变更
    void changeContractInitial(Long id, ChangeContractInitialReq vo);

    // 转交
    void transferContractInitial(Long id, TransferContractInitialReq vo);

    // 纠纷
    void disputeContractInitial(Long id, DisputeContractInitialReq vo);

    // 授权
    void authorizationContractInitial(Long id, AuthorizationContractInitialReq vo);

    // 终止
    void terminateContractInitial(Long id, TerminateContractInitialReq vo);

    // 借阅
    void borrowContractInitial(Long id, BorrowContractInitialReq vo);

    // 跟踪
    void trackingContractInitial(Long id, TrackingContractInitialReq vo);

    // 提醒
    void remindContractInitial(Long id, RemindContractInitialReq vo);

    ContractLedgerResp getContractLedger();

    ContractStatusResp getContractStatus();

    List<ContractTop10Resp> getContractTop10();

}
